#ifdef SCALAR_INT_FACET
SCALAR_INT_FACET(I8, 8, llvm::Type::getInt8Ty(ctx))
SCALAR_INT_FACET(I16, 16, llvm::Type::getInt16Ty(ctx))
SCALAR_INT_FACET(I32, 32, llvm::Type::getInt32Ty(ctx))
SCALAR_INT_FACET(I64, 64, llvm::Type::getInt64Ty(ctx))
SCALAR_INT_FACET(I128, 128, llvm::Type::getInt128Ty(ctx))
#endif
#ifdef SCALAR_FP_FACET
SCALAR_FP_FACET(F32, 32, llvm::Type::getFloatTy(ctx))
SCALAR_FP_FACET(F64, 64, llvm::Type::getDoubleTy(ctx))
#endif
#ifdef VECTOR_FACET
VECTOR_FACET(V1I8, 1, I8)
VECTOR_FACET(V2I8, 2, I8)
VECTOR_FACET(V4I8, 4, I8)
VECTOR_FACET(V8I8, 8, I8)
VECTOR_FACET(V16I8, 16, I8)
VECTOR_FACET(V1I16, 1, I16)
VECTOR_FACET(V2I16, 2, I16)
VECTOR_FACET(V4I16, 4, I16)
VECTOR_FACET(V8I16, 8, I16)
VECTOR_FACET(V1I32, 1, I32)
VECTOR_FACET(V2I32, 2, I32)
VECTOR_FACET(V4I32, 4, I32)
VECTOR_FACET(V1I64, 1, I64)
VECTOR_FACET(V2I64, 2, I64)
VECTOR_FACET(V1F32, 1, F32)
VECTOR_FACET(V2F32, 2, F32)
VECTOR_FACET(V4F32, 4, F32)
VECTOR_FACET(V1F64, 1, F64)
VECTOR_FACET(V2F64, 2, F64)
#endif
#ifdef SPECIAL_FACET
// Special facets for general-purpose registers
SPECIAL_FACET(PTR, 64, llvm::Type::getInt8PtrTy(ctx))
SPECIAL_FACET(I8H, 8, llvm::Type::getInt8Ty(ctx))
// Special facets for flags register
SPECIAL_FACET(ZF, 1, llvm::Type::getInt1Ty(ctx))
SPECIAL_FACET(SF, 1, llvm::Type::getInt1Ty(ctx))
SPECIAL_FACET(PF, 1, llvm::Type::getInt1Ty(ctx))
SPECIAL_FACET(CF, 1, llvm::Type::getInt1Ty(ctx))
SPECIAL_FACET(OF, 1, llvm::Type::getInt1Ty(ctx))
SPECIAL_FACET(AF, 1, llvm::Type::getInt1Ty(ctx))
SPECIAL_FACET(DF, 1, llvm::Type::getInt1Ty(ctx))
#endif
#ifdef PSEUDO_INT_FACET
PSEUDO_INT_FACET(I)
#endif
#ifdef PSEUDO_VECTOR_FACET
PSEUDO_VECTOR_FACET(VI8, I8)
PSEUDO_VECTOR_FACET(VI16, I16)
PSEUDO_VECTOR_FACET(VI32, I32)
PSEUDO_VECTOR_FACET(VI64, I64)
PSEUDO_VECTOR_FACET(VF32, F32)
PSEUDO_VECTOR_FACET(VF64, F64)
#endif
